Charge-Coupled Devices (CCDs) provide a basic function of storing and moving isolated packets of charge. Various operations can be performed on the packets: they can be added (merged), split into two or more pieces, conditionally steered, destructively or non-destructively sensed, etc. These operations make it possible to design CCD-based circuits to perform various discrete-time analog signal processing operations, with signals represented as charge packets or differential charge-packet pairs.
One operation that has proved difficult to implement, however, is subtraction. Various methods have been proposed for subtracting one charge packet from another, or removing a fixed or controllable charge from a packet. All of these methods suffer from various accuracy problems such as non-linearity and noise, or from slow operating speed.